REM	UNRESOLVED CODE
REM 	NEED VIEW COMMAND IN THE PRIMARY LIST TO VIEW THE CODE...
REM	CALL COMMAND NEEDS TO LOAD TWO VARIABLE LOCATIONS, NOT JUST 1...ERRRRR
REM	CHECK BLOAD WITH VARIABLE FILES... MAKE SURE ITS WORKING....
REM	CHECK IF CONDITIONS....

REM PARSER INFORMATION
REM PJ= # CURRENT WORKING ON
REM PF= # OF STATEMENTS
REM PF$(X)- STATEMENT COMPONET

REM 750 PJ=PJ+1:IF ENDS IN :  THEN REMOVES : RETURNS A$
REM 760 GOSUB 750: XXXX,YYYY  SEPERATES AND REMOVES ,  A$ REMAINS, B$ IS THE LEFT PART
REM 770 GOSUB 750: STRIPS ( AND ) FROM RIGHT/LEFT AND RETURNS A$



0 REM 'IDIOT COMPILER GEN3 - (c) NASPITE LABS 2018 - V1.49 - PARSER COMPONENT
1 DIM CC$(200):DIM ZA$(200):LK=16:DIM PF$(50)
5 PRINT CHR$(4);"PR#3":HOME

10 GOTO 800

11  IF A$ = "HELP" OR A$ = "?HELP" OR A$ = "?" THEN  GOSUB 100: GOTO 10
12  IF A$ = "VAR" GOTO 6010
13  IF A$ = "QUIT" OR A$ = "Q" OR A$ = "EXIT" OR A$="END" THEN PRINT:PRINT CHR$(4);"RUN BOOT"
14  IF A$ = "LINES" OR A$="LIST" THEN  GOSUB 130:GOTO 10
15  IF A$ = "RESET" GOTO 200
16  IF A$ = "COMPILE" GOTO 30
17  IF A$ = "ASM" GOTO 6000
19  IF A$ = "DEL" OR A$="DELETE" THEN GOSUB 150:GOSUB 160:GOTO 10

20 GOTO 805

25  ONERR  GOTO 28
26  ZA$="LINE."+A$
27  PRINT  CHR$ (4);"VERIFY";ZA$:PRINT  CHR$ (4);"DELETE";ZA$
28  ZA$ = "LINE." + A$: PRINT  CHR$ (4);"OPEN";ZA$: PRINT  CHR$ (4): PRINT  CHR$ (4);"CLOSE"
29  PJ=PJ+2:A$=PF$(PJ):VTAB 5:PRINT "  **WORKING ON: (";ZA$;"): ":GOTO 1010

REM------------ COMPILE PROGRAM
30  PRINT : PRINT:INPUT "      ***  COMPILE PROGRAM (Y/N): ";A$
31  IF A$ = "Y" OR A$ = "y" GOTO 35
32  PRINT : PRINT : GOTO 29
35  PRINT  CHR$ (4);"RUN COMPILER.1"


REM------------- HELP
100  PRINT "iDIOT COMPILER HELP - ** THE PARSER **"
101  PRINT "    The PARSER technology was designed to be used in EMULATORS"
102  PRINT "    which have the capability to PRINT APPLESOFT CODE to the"
103  PRINT "    usable PRINTER file, which then can be copy and pasted into"
104  PRINT "    the parser component of IDIOT COMPILER.":PRINT
105  PRINT "      ** ATTEMPTING TO TYPE IN CODE YOURSELF WILL ALMOST ALWAYS **"
106  PRINT "      ** CAUSE PROBLEMS DUE TO LINE SPACING REQUIREMENTS/OUTPUT **"
107  PRINT "      **       THAT APPLESOFT DOES BY DEFAULT TO THE SCREEN.    **":PRINT
108  PRINT "    1.  CREATE APPLESOFT PROGRAM.  Upon saving  it will automatically
109  PRINT "        format the CODE to be exactly as IDIOT COMPILER expects upon input.
110  PRINT "    2.  type  NEW  --  then LOAD YOUR PROGRAM AGAIN."
111  PRINT "    3.  INSERT THE COMPILER DISK... type  EXEC LIST  - the code will now
112  PRINT "        dump to the printer file in the correct listing/format."
113  PRINT "    4.  BOOT the COMPILER and then its PARSER module.  Then PASTE the CODE"
114  PRINT "        from PRINTER TEXT FILE at the PROMPT  [ ENTER BASIC ]"
115  PRINT "    5.  If for any reason the compiler STOPS doing something, this means"
116  PRINT "        the CODE INPUT has problems, either with line spacing, arguments,":GOTO 125


117  HTAB 50: PRINT "** PRESS ANY KEY **":YY = 0:POKE -16368,0
118  YY =  PEEK ( - 16384): IF YY < 128 GOTO 118
119  POKE  - 16368,0:PRINT:RETURN

125  PRINT "        or attempts to COMPILE code that it currently can not deal with.":PRINT
126  PRINT "    ** SEE the MANUAL for more information **" :GOTO 117






REM ---------------- SEE CURRENT LINES (130-)
130 ONERR  GOTO 133
131 PRINT : PRINT "CURRENT LINES...": PRINT  CHR$ (4);"OPEN COMPILED.LINES"
132 PRINT  CHR$ (4);"READ COMPILED.LINES": INPUT A$: PRINT  CHR$ (4): PRINT "   ";A$: GOTO 132
133 CALL -3288:PRINT  CHR$ (4);"CLOSE":RETURN


REM---------------- DELETE LINE FROM TABLE
150 GOSUB 130:PRINT:INPUT "*** LINE TO DELETE: ";ZA$:IF LEN(ZA$)=0 OR ZA$="LINE.0" OR ZA$="LINE.999" GOTO 10
151 ON ERR GOTO 154
152 A=1:PRINT CHR$(4);"OPEN COMPILED.LINES":PRINT CHR$(4);"READ COMPILED.LINES"
153 INPUT CC$(A):A=A+1:GOTO 153
154 PRINT CHR$(4);"CLOSE":ONERR GOTO 10
155 PRINT CHR$(4);"DELETE COMPILED.LINES"
156 PRINT CHR$(4);"OPEN COMPILED.LINES":PRINT CHR$(4);"WRITE COMPILED.LINES"
157 FOR B=1 TO A-1:IF CC$(B)=ZA$ OR LEN(CC$(B))=0 THEN GOTO 159
158 PRINT CC$(B)
159 NEXT:PRINT CHR$(4);"CLOSE":PRINT "*** ";ZA$;" REMOVED!":CALL -3288:RETURN


REM---------------- DELETE ACTUAL LINE (ONLY FROM DEL IN MAIN)
160 ON ERR GOTO 163
161 PRINT CHR$(4);"DELETE";ZA$
162 RETURN
163 CALL -3288:RETURN


REM---------------- RESET (200-249)
200 PRINT : PRINT
201 INPUT "   ***  RESET AND DELETE ALL COMPILED LINES? (Y/N): ";A$
202 IF A$ = "Y" OR A$ = "y" GOTO 210
203 GOTO 10

210 ON ERR GOTO 215
211 PRINT  CHR$ (4);"OPEN COMPILED.LINES"
212 PRINT  CHR$ (4);"READ COMPILED.LINES": INPUT A$: PRINT  CHR$ (4)
213 IF  LEFT$ (A$,5) = "LINE." THEN X = X:PRINT  CHR$ (4);"DELETE";A$:PRINT "   ***  DELETING... ";A$
214 GOTO 212
215 IF  PEEK (222) = 10 OR PEEK(222)=6 THEN  GOTO 212
216 PRINT  CHR$ (4);"CLOSE": ONERR  GOTO 221

220  PRINT  CHR$ (4);"DELETE VARIABLES": PRINT "   ***  VARIABLE TABLE FLUSHED"
221  PRINT : INPUT "   ***  FOR/NEXT LOOP DEPTH: ";SD:I = 30007
222  PRINT  CHR$ (4);"OPEN VARIABLES"
223  SZ$ =  STR$ (SD) + " FORLOOPS": IF SD = 0 THEN I = 30007: GOTO 225
224  FOR A = 1 TO SD:I = I + 2: NEXT

225  PRINT  CHR$ (4);"WRITE VARIABLES": PRINT SZ$: PRINT I:PRINT  CHR$ (4);"CLOSE"

230  ONERR  GOTO 232
231  PRINT  CHR$ (4);"DELETE COMPILED.LINES"
232  PRINT  CHR$ (4);"OPEN COMPILED.LINES"
233  PRINT  CHR$ (4);"WRITE COMPILED.LINES":
234  PRINT "END":PRINT "LINE.0":PRINT "LINE.999"
235  PRINT  CHR$ (4);"CLOSE"

240  ONERR  GOTO 242
241  PRINT  CHR$ (4);"DELETE COMPILE.A"
242  ONERR  GOTO 244
243  PRINT  CHR$ (4);"DELETE COMPILE.B"
244  ONERR  GOTO 246
245  PRINT  CHR$ (4);"DELETE COMPILE.C"
246  ONERR  GOTO 248
247  PRINT  CHR$ (4);"DELETE PROGRAM.LISTING"
248  PRINT "   ***  COMPILER IS NOW RESET": GOTO 10


REM ------------------- CREATE CODE FOR LINE (APPEND)
REM 300 ADD COMMAND,KEEP GOING - 325 ADD COMMAND, END LINE
300 PRINT:GOSUB 301: GOTO 880
301 PRINT  CHR$ (4);"APPEND";ZA$: PRINT  CHR$ (4);"WRITE";ZA$
302 FOR X = 1 TO A:PRINT CC$(X): NEXT:PRINT CHR$(4);"CLOSE"
303 FOR X = 1 TO A: HTAB 50: PRINT CC$(X): NEXT :RETURN


REM---------------------END LINE/CREATE CODE FOR LAST INSTRUCTION
325 IF A>0 THEN GOSUB 301
326 GOSUB 350:KP=LEN(ZA$):IF KP<9 THEN GOTO 330
327 A=A+1:CC$(A)="RTS":GOSUB 301

REM--------------------PRINT LISTING OF FINISHED LINE
330 A = 1:ZA$(1)="": ONERR  GOTO 333
331  PRINT  CHR$ (4);"OPEN";ZA$: PRINT  CHR$ (4);"READ";ZA$
332  INPUT ZA$(A):A = A + 1: GOTO 332

333  CALL -3288:PRINT  CHR$ (4);"CLOSE";ZA$
334  IF LEN(ZA$(1))=0 THEN A$="CANCEL":GOTO 1010
335  PRINT:PRINT ZA$: FOR B = 1 TO A-1: HTAB 5: PRINT ZA$(B): NEXT : GOTO 10


REM----------------ADD TO NEW COMPILED.LINES WITH CHECK FOR PRE-EXISTING
350  ONERR  GOTO 355
351  PRINT  CHR$ (4);"OPEN COMPILED.LINES"
352  PRINT  CHR$ (4);"READ COMPILED.LINES": INPUT GW$: PRINT  CHR$ (4)
353  IF GW$ = ZA$ THEN PRINT  CHR$ (4);"CLOSE COMPILED.LINES": RETURN 
354  GOTO 352

355  PRINT  CHR$ (4);"CLOSE COMPILED.LINES"
356  PRINT  CHR$ (4);"APPEND COMPILED.LINES"
357  PRINT  CHR$ (4);"WRITE COMPILED.LINES":PRINT ZA$
358  PRINT  CHR$ (4);"CLOSE COMPILED.LINES"
359  CALL -3288: RETURN


REM-------------------- NEW INPUT
400  T = 0:L =  LEN (SS$): IF L=0 THEN POP:GOTO 1000
401  V=VAL(SS$):IF SS$ = "0" THEN GOTO 403 
402  IF V = 0 THEN II$ = SS$: GOSUB 500: RETURN 
403  T=1:RETURN


REM---------------------READ VARIABLE FILES
500  ONERR  GOTO 510
501  PRINT  CHR$ (4);"OPEN VARIABLES"
502  PRINT  CHR$ (4);"READ VARIABLES"
503  INPUT IJ$:IF II$ = IJ$ GOTO 505
504  GOTO 502
505 INPUT IX:IY = IX + 1:IZ = IY + 1: PRINT  CHR$ (4);"CLOSE": RETURN

510 PRINT  CHR$ (4);"CLOSE"
511 PRINT : PRINT "**CREATED NEW VARIABLE: ";II$:II =  VAL (IJ$):II = II + 3
512 PRINT  CHR$ (4);"APPEND VARIABLES": PRINT  CHR$ (4);"WRITE VARIABLES"
513 PRINT II$: PRINT II: PRINT  CHR$ (4);"CLOSE":CALL  - 3288:GOTO 501


REM----------------INPUT FIXER/VALIDATOR
600 D=LEN(DJ$):IF D=0 THEN POP:GOTO 1000
601 D=VAL(DJ$):RETURN


REM----------------HEX CONVERSION
REM----------------TURN # INTO HEX DIGITS - INPUT H
700 HX(1) =  INT (H / 256):HX(2) = H - (HX(1) * 256): RETURN


REM--------------NEXT INSTRUCTION, REMOVE ":" IF AT END AND RETURN IN A$
750 PJ=PJ+1
751 IF RIGHT$(PF$(PJ),1)=":" THEN L=LEN(PF$(PJ)):PF$(PJ)=LEFT$(PF$(PJ),L-1)
752 A$=PF$(PJ):RETURN

REM------------STRIP POTENTIAL ":" THEN DIVIDE XXXX , YYYY
760 GOSUB 750
761 L=LEN(A$):A=1:B$=""
762 IF MID$(A$,A,1)="," THEN GOTO 764
763 B$=B$+MID$(A$,A,1):A=A+1:GOTO 762
764 A$=RIGHT$(A$,L-A):RETURN


REM-----------STRIP ( AND ) FROM LEFT/RIGHT
770 GOSUB 750:L=LEN(A$)
771 IF LEFT$(A$,1)="(" THEN A$=RIGHT$(A$,L-1):L=LEN(A$)
772 IF RIGHT$(A$,1)=")" THEN A$=LEFT$(A$,L-1)
773 RETURN



REM--------------PARSER TECHNOLOGY

800 CALL 54915:A=FRE(X):FOR A=1 TO 29:PF$(A)="":NEXT A
801 PRINT:PRINT "** [ PARSER MODE ] - * CODE MUST BE CORRECTLY FORMATTED *"
802 PRINT "** [ ENTER BASIC ]:  ";:CALL -657:HOME
803 A$="": FOR I=512 TO 767: IF PEEK(I) <> 141 THEN A$=A$+CHR$(PEEK(I)-128):NEXT I
804 A=0:GOTO 11

805 PD$="":PB$="":PF=0:PJ=0
806 FOR A=1 TO LEN(A$)
807 PC$=MID$(A$,A,1):IF PC$=" " THEN PF=PF+1:PF$(PF)=PD$:PD$="":GOTO 809
808 PD$=PD$+PC$
809 NEXT:PF=PF+1:PF$(PF)=PD$:PJ=1



810 IF LEN(PF$(1))>0 THEN PRINT "  ** POSSIBLE BAD LINE NUMBER or BAD FORMATTING":GOTO 1000
811 PJ=PJ+1:IF PJ>PF THEN PRINT "TOO MANY STATEMENTS OR NO COMMAND":GOTO 1000
812 A$=PF$(PJ):GOTO 25



880 IF PJ>PF THEN A=0:GOTO 325
881 IF PF$(PJ)=":" THEN PJ=PJ+1:GOTO 880
882 IF PF$(PJ)=" " THEN PJ=PJ+1:GOTO 880
883 IF PF$(PJ)="" THEN PJ$=PJ+1:GOTO 880
885 A$=PF$(PJ):GOTO 1010


REM---------------- COMMAND INPUT LIST
1000 PRINT "  ** BAD COMMAND/PARAMETER: [ ";A$;" ].":GOSUB 117:GOTO 10

1010 IF A$ = "HOME" THEN A = 1:CC$(A) = "JSR 64600":PJ=PJ+1:GOTO 300
1011 IF A$ = "TEXT" THEN A = 1:CC$(1) = "JSR 64313":PJ=PJ+1:GOTO 300
1012 IF A$ = "INVERSE" THEN A = 2:CC$(1) = "LDA #63":CC$(2) = "STA 50":PJ=PJ+1:GOTO 300
1013 IF A$ = "NORMAL" THEN A = 2:CC$(1) = "LDA #255":CC$(2) = "STA 50":PJ=PJ+1:GOTO 300
1014 IF A$ = "FLASH" THEN A = 2:CC$(1) = "LDA #127":CC$(2) = "STA 50":PJ=PJ+1: GOTO 300
1015 IF A$ = "GR" THEN A = 1:CC$(1) = "JSR 64320": PJ=PJ+1:GOTO 300
1016 IF A$=  "PR#" GOTO 1100	
1022 IF A$ = "RUN" THEN A = 1:CC$(1) = "JMP 30000":PJ=PJ+1:GOTO 325
1023 IF A$ = "RETURN" THEN A = 1:CC$(1) = "RTS":PJ=PJ+1:GOTO 325
1024 IF A$ = "CALL" GOTO 1110
1030 IF A$ = "GOSUB" GOTO 2000
1031 IF A$ = "GOTO" GOTO 2010
1032 IF A$ = "VTAB" GOTO 2020
1033 IF A$ = "HTAB" GOTO 2030
1036 IF A$ = "COLOR=" GOTO 2060
1035 IF A$ = "POKE" GOTO 2050
1037  IF A$ = "PLOT" GOTO 2070
1059  IF A$ = "WAIT" GOTO 5310
1039  IF A$ = "VLIN" GOTO 2090
1040  IF A$ = "HLIN" GOTO 2100
1053  IF A$ = "LET" GOTO 8000
1054  IF LEFT$(A$,3)= "INC" GOTO 8100
1055  IF LEFT$(A$,3)= "DEC" GOTO 8200
1051  IF A$ = "FOR" GOTO 3100
1050  IF A$ = "PRINT" GOTO 3000
1042  IF A$  ="DOSB" GOTO 2120
1052  IF A$ = "IF" GOTO 8300
1099 GOTO 1000


REM --------PR# SELECTION
1100 PJ=PJ+1:IF LEN(PF$(PJ))>1 THEN PF$(PJ)=LEFT$(PF$(PJ),1)
1101 A$=PF$(PJ)
1102 IF A$="0" THEN CC$(1) = "LDA #21":CC$(2)="JSR 49920":A = 2:PJ=PJ+1:GOTO 300
1103 IF A$ = "3" THEN CC$(1) = "JSR 49920":CC$(2) = "JSR 64600":CC$(3) = "JSR 1002":A = 3:PJ=PJ+1:GOTO 300
1104 PRINT "INVALID PR#":STOP

REM ----CALL NUMBER
1110 GOSUB 750:SS$=A$:A=1:CC$(1)="JSR "+SS$:PJ=PJ+1:GOTO 300



REM----------------*GOSUB
2000 GOSUB 750:CC$=A$:CC$="LINE."+CC$:CC$(1) = "COMMAND":CC$(2) = "GOSUB"
2001 CC$(3) = CC$:ZP$ = ZA$:ZA$ = CC$(3): GOSUB 350:ZA$ = ZP$:A = 3:PJ=PJ+1:GOTO 300


REM----------------*GOTO
2010 GOSUB 750:CC$=A$:CC$="LINE."+CC$:CC$(1) = "COMMAND":CC$(2) = "GOTO"
2011 CC$(3) = CC$:ZP$ = ZA$:ZA$ = CC$(3): GOSUB 350:ZA$ = ZP$:A = 3:PJ=PJ+1:GOTO 325


REM----------------*VTAB  BETTER FIX V1.38
2020 GOSUB 750:SS$=A$:GOSUB 400
2021 IF T=1 THEN V=V-1:CC$ =  STR$ (V):CC$(1) = "LDA #" + CC$:CC$(2)="STA 37":CC$(3)="JSR 64546":A=3:PJ=PJ+1:GOTO 300
2022 CC$ =  STR$ (IX):CC$(1) = "LDX " + CC$:CC$(2)="DEX":CC$(3)="TXA"
2023 CC$(3)="TXA":CC$(4)="STA 37":CC$(5)="JSR 64546":A=5:PJ=PJ+1:GOTO 300


REM----------*HTAB V2
2030 GOSUB 750:SS$=A$:GOSUB 400:CC$(2)="STX 36"
2031 IF T = 1 THEN V = V - 1:CC$ =  STR$ (V):CC$(1) = "LDX #" + CC$:A=2:GOTO 2033
2032 A=3:CC$ =  STR$ (IX):CC$(1) = "LDX " + CC$:CC$(2)="DEX":CC$(3)="STX 36"
2033 PJ=PJ+1:GOTO 300




REM---------*PEEK V3
2040 SY$=LP$:SX$=LS$
2042 SS$ = SX$: GOSUB 400: IF T = 1 THEN X = X:CC$ =  STR$ (V):CC$(1) = "LDA " + CC$: GOTO 2047
2043 CC$ =  STR$ (IX):CC$(1) = "LDX " + CC$:CC$ =  STR$ (IY):CC$(2) = "LDY " + CC$
2044 CC$(3)="STX 113":CC$(4)="STY 114":CC$(5)="LDY #0":CC$(6)="LDA (113),Y"
2045 SS$ = SY$: GOSUB 400:C$ =  STR$ (IX):CC$(7) = "STA " + C$:
2046 CC$ =  STR$ (IY):CC$(8) = "STY " + CC$:A = 8:PJ=PJ+1:GOTO 300
2047 SS$ = SY$: GOSUB 400:C$ =  STR$ (IX):CC$(2) = "STA " + C$:
2048 CC$(3)="LDA #0":CC$=STR$(IY):CC$(4)="STA "+CC$:A=4:PJ=PJ+1:GOTO 300



REM----------------*POKE V2
2050 GOSUB 760: C=VAL(B$):SS$=A$:GOSUB 400:IF T=1 THEN GOTO 2052
2051 C$ =  STR$ (IX):D$=STR$(IY):CC$(1) = "LDA " + C$:C$ =  STR$ (C):GOTO 2053
2052 CC$ =  STR$ (V):CC$(1) = "LDA #" + CC$:C$ =  STR$ (C)
2053 CC$(2) = "STA " + C$:A=2:PJ=PJ+1:GOTO 300



REM----------------*COLOR
2060 GOSUB 750:SS$=A$:GOSUB 400
2061 IF T = 1 THEN CC$ =  STR$ (V):CC$(1) = "LDA #" + CC$:GOTO 2065
2062 CC$ =  STR$ (IX):CC$(1) = "LDA " + CC$
2065 CC$(2) = "JSR 63588":A = 2:PJ=PJ+1:GOTO 300


REM----------------*PLOT
2070 GOSUB 760:SX$=B$:SY$=A$
2075 SS$ = SX$: GOSUB 400: IF T = 1 THEN X = X:CC$ =  STR$ (V):CC$(1) = "LDY #" + CC$: GOTO 2077
2076 CC$ =  STR$ (IX):CC$(1) = "LDY " + CC$
2077 SS$ = SY$: GOSUB 400: IF T = 1 THEN X = X:CC$ =  STR$ (V):CC$(2) = "LDA #" + CC$: GOTO 2079
2078 CC$ =  STR$ (IX):CC$(2) = "LDA " + CC$
2079 CC$(3) = "JSR 63488":A = 3:PJ=PJ+1:GOTO 300







REM----------------*SCRN
2080 SZ$=LP$:SX$=B$:SY$=A$
2083 SS$ = SX$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(1) = "LDY #" + CC$: GOTO 2085
2084 CC$ =  STR$ (IX):CC$(1) = "LDY " + CC$
2085 SS$ = SY$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(2) = "LDA #" + CC$: GOTO 2087
2086 CC$ =  STR$ (IX):CC$(2) = "LDA " + CC$
2087 SS$ = SZ$:IX = 0: GOSUB 400:DD$ =  STR$ (IX): IF  VAL (DD$) = 0 GOTO 1000
2088 CC$(3) = "JSR 63601":CC$(4) = "STA " + DD$:A = 4:PJ=PJ+1:GOTO 300


REM----------------*VLIN
2090 CC$(3) = "STA 45":CC$(5) = "JSR 63528":GOSUB 750:SX$=A$:GOSUB 750:GOSUB 760:SY$=B$:SZ$=A$
2094 SS$ = SZ$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(1) = "LDY #" + CC$: GOTO 2096
2095 CC$ =  STR$ (IX):CC$(1) = "LDY " + CC$
2096 SS$ = SY$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(2) = "LDA #" + CC$: GOTO 2098
2097 CC$ =  STR$ (IX):CC$(2) = "LDA " + CC$
2098 SS$ = SX$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(4) = "LDA #" + CC$:A=5:PJ=PJ+1:GOTO 300
2099 CC$ =  STR$ (IX):CC$(4) = "LDA " + CC$:PJ=PJ+1:A=5:GOTO 300


REM----------------*HLIN
2100 CC$(3) = "STY 44":CC$(5) = "JSR 63513":GOSUB 750:SX$=A$:GOSUB 750:GOSUB 760:SY$=B$:SZ$=A$
2104 SS$ = SZ$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(1) = "LDA #" + CC$: GOTO 2106
2105 CC$ =  STR$ (IX):CC$(1) = "LDA " + CC$
2106 SS$ = SY$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(2) = "LDY #" + CC$: GOTO 2108
2107 CC$ =  STR$ (IX):CC$(2) = "LDY " + CC$
2108 SS$ = SX$: GOSUB 400: IF T = 1 THEN CC$ =  STR$ (V):CC$(4) = "LDY #" + CC$:A=5:PJ=PJ+1:GOTO 300
2109 CC$ =  STR$ (IX):CC$(4) = "LDY " + CC$:A=5:PJ=PJ+1:GOTO 300







REM----------------RND#
2110 SX$=LP$:SY$=LS$
2113 SS$ = SX$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):SS$ = SY$: GOSUB 400
2114 CC$(2) = "STA " + FF$:CC$(17) = "STX " + EE$: IF T = 1 GOTO 2116
2115 GG$ =  STR$ (IX):CC$(10) = "LDY " + GG$: GOTO 2117
2116 GG$ =  STR$ (V):CC$(10) = "LDY #" + GG$
2117 CC$(1) = "LDA #0":CC$(3) = "STA 171":CC$(4) = "STA 164":CC$(5) = "TAY":CC$(6) = "LDA #201":CC$(7) = "JSR 60153":CC$(8) = "JSR 61374"
2118 CC$(9) = "JSR 60259":CC$(11) = "DEY":CC$(12) = "JSR 58113":CC$(13) = "JSR 59778":CC$(14) = "JSR 59218":CC$(15) = "LDX 80":CC$(16) = "INX"
2119 PRINT : HTAB 44: PRINT "-->   ";SX$;" = RND ( 1 TO ";SY$;")   <--":A = 17:PJ=PJ+1:GOTO 300


REM----------------SIMPLE DOS/BLOAD/BRUN ECT
2120 GOSUB 750
2121 IF A$="LOAD" OR A$="RUN" THEN GOTO 2123
2122 PRINT "  ** THIS DOS COMMAND CURRENTLY NOT SUPPORTED":GOTO 1000
2123 V$=A$:GOSUB 750:V$=V$+" "+A$
2124 V =  LEN (V$):A=0: IF V = 0 GOTO 1000


2125 A=A+1:CC$(A) = "LDA #132":A = A + 1:CC$(A) = "JSR 65005":A = A + 1
2126 FOR U = 1 TO V:VV$ =  MID$ (V$,U,1):VV =  ASC (VV$):VV$ =  STR$ (VV)
2127 CC$(A) = "LDA #" + VV$:A = A + 1:CC$(A) = "JSR 65005":A = A + 1: NEXT 
2128 CC$(A) = "LDA #141":A = A + 1:CC$(A) = "JSR 65005":A = A + 1
2129 CC$(A) = "PLA":A = A + 1:CC$(A) = "PLA":PJ=PJ+1:GOTO 300



REM----------------*PRINT v4 3.26.18 FIX
3000 Y$="":GOSUB 750:IF ASC(A$)=34 THEN GOTO 3005
3001 GOTO 3020

3005 L=LEN(A$):A$=RIGHT$(A$,L-1)
3006 L=LEN(A$):B$=RIGHT$(A$,1):IF ASC(B$)=59 THEN A$=LEFT$(A$,L-1):Y$="N"
3007 L=LEN(A$):B$=RIGHT$(A$,1):IF ASC(B$)=34 THEN A$=LEFT$(A$,L-1):GOTO 3010
3008 C$=A$+" ":GOSUB 750:A$=C$+A$:GOTO 3006

3010 L=LEN(A$):V$=A$:V=LEN(V$):A=1:IF V=0 GOTO 10
3012 FOR U = 1 TO V:VV$ =  MID$ (V$,U,1):VV =  ASC (VV$)
3013 IF VV<128 THEN VV=VV+128
3014 VV$ =  STR$ (VV)
3015 CC$(A) = "LDA #" + VV$:A = A + 1:CC$(A) = "JSR 65005":A = A + 1: NEXT 
3016 A=A-1:GOSUB 3030:PJ=PJ+1:GOTO 300


3020 SS$=A$:Y$="":IF RIGHT$(SS$,1)=";" THEN L=LEN(SS$):SS$=LEFT$(SS$,L-1):Y$="N"
3021 GOSUB 400:EE$ =  STR$(IX):FF$ =  STR$ (IY):GG$ =  STR$ (IZ)
3022 CC$(1) = "LDY " + GG$:CC$(2) = "LDX " + FF$:CC$(3) = "LDA " + EE$
3023 CC$(4) = "COMMAND":CC$(5) = "GOSUB":CC$(6) = "LINE.24BITPRINT"
3025 ZY$ = ZA$:ZA$ = CC$(6):GOSUB 350:ZA$ = ZY$:A = 6:GOSUB 3030:PJ=PJ+1:GOTO 300

3030 IF Y$="N" THEN RETURN
3031  A=A+1:CC$(A)="LDA #141":A=A+1:CC$(A)="JSR 65005":RETURN



REM----------------FOR NEXT/LOOP ULTRA SPEED 2BYTE VERSION!
3100 GOSUB 750:GOSUB 750:GOSUB 750:SS$=A$:GOSUB 400:I=V
3101 GOSUB 750:GOSUB 750:SS$=A$:GOSUB 400:J=V:GOSUB 750
3102 IF A$="GOSUB" THEN X=X:GOSUB 750:JJ$=A$:GOTO 3110
3103 PRINT "  ** GOSUB MUST BE INSIDE FOR NEXT LOOPS":GOTO 1000
3104 H = J - I: GOSUB 700:CC$ =  STR$ (HX(2)):DD$ =  STR$ (HX(1)):CC$(4) = "LDA #" + CC$:CC$(6) = "LDA #" + DD$
3105 CC$(8) = "COMMAND":CC$(9) = "GOSUB":CC$(10) = JJ$
3106 CC$(1) = "INC 30007":CC$(2) = "INC 30007":CC$(3) = "LDX 30007":CC$(5) = "STA 30006,X"
3107 CC$(7) = "STA 30007,X":CC$(11) = "LDX 30007":CC$(12) = "LDA 30006,X":CC$(13) = "BNE 8":CC$(14) = "LDA 30007,X"
3108 CC$(15) = "BEQ 10":CC$(16) = "DEC 30007,X":CC$(17) = "DEC 30006,X":CC$(18) = "LDA #0":CC$(19) = "BEQ -26"
3109 CC$(20) = "DEC 30007":CC$(21) = "DEC 30007":ZP$=ZA$:ZA$ = CC$(10): GOSUB 350:ZA$ = ZP$:A = 21:PJ=PJ+2:GOTO 300

REM -------FOR NEXT LOOP LENGHT CHECKER ADDITION V1.41
3110 JJ=LEN(JJ$):IF JJ>3 THEN JJ$="LINE."+JJ$:GOTO 3104
3111 PRINT "  ** GOSUB LENTH NAME MUST BE > THEN 3 CHARRECTERS":GOTO 1000





REM----------------IF 16BIT SUBSTRUCTURE

3200 SF$=LP$:SG$=LR$
3201 IF LQ$="="  GOTO 3210
3202 IF LQ$=">"  GOTO 3220
3203 IF LQ$="<"  GOTO 3230
3204 PRINT "  ** INCORRECT SIGN [ ";LQ$;" ] or BAD FORMATTING":GOTO 1000



3210 SS$ = SF$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):SS$ = SG$: GOSUB 400: IF T = 1 GOTO 3212
3211 GG$ =  STR$ (IX):HH$ =  STR$ (IY):CC$(2) = "CMP " + HH$:CC$(5) = "CMP " + GG$:CC$(3) = "BNE +8": GOTO 3213
3212 H = V: GOSUB 700:GG$ =  STR$ (HX(2)):HH$ =  STR$ (HX(1)):CC$(2) = "CMP #" + HH$:CC$(5) = "CMP #" + GG$:CC$(3) = "BNE +7"
3213 CC$(1) = "LDA " + FF$:CC$(4) = "LDA " + EE$
3214 CC$(6) = "BEQ +3":CC$(7) = "COMMAND":CC$(8) = "NEXT":CC$(9) = ZA$:A = 9:PJ=PJ+2:GOTO 300

3220 SS$ = SF$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):SS$ = SG$: GOSUB 400: IF T = 1 GOTO 3222
3221 GG$ =  STR$ (IX):HH$ =  STR$ (IY):CC$(2) = "CMP " + FF$:CC$(3) = "BNE +6":CC$(5) = "CMP " + EE$: GOTO 3223
3222 H = V: GOSUB 700:GG$ =  STR$ (HX(2)):HH$ =  STR$ (HX(1)):CC$(2) = "CMP " + FF$:CC$(3) = "BNE +5":CC$(5) = "CMP " + EE$
3223 BZ =  LEN (HH$): IF BZ > 4 THEN CC$(1) = "LDA " + HH$
3225 BZ =  LEN (GG$): IF BZ > 4 THEN CC$(4) = "LDA " + GG$: GOTO 3227
3226 CC$(1) = "LDA #" + HH$:CC$(4) = "LDA #" + GG$
3227 CC$(6) = "BCC +3":CC$(7) = "COMMAND":CC$(8) = "NEXT":CC$(9) = ZA$:A = 9:PJ=PJ+2:GOTO 300 

3230  SS$ = SF$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):SS$ = SG$: GOSUB 400: IF T = 1 GOTO 3232
3231  GG$ =  STR$ (IX):HH$ =  STR$ (IY):CC$(2) = "CMP " + HH$:CC$(3) = "BNE +6":CC$(5) = "CMP " + GG$: GOTO 3233
3232 H = V: GOSUB 700:GG$ =  STR$ (HX(2)):HH$ =  STR$ (HX(1)):CC$(2) = "CMP #" + HH$:CC$(3) = "BNE +5":CC$(5) = "CMP #" + GG$
3233 CC$(1) = "LDA " + FF$:CC$(4) = "LDA " + EE$:CC$(6) = "BCC +3"
3234 CC$(7) = "COMMAND":CC$(8) = "NEXT":CC$(9) = ZA$:A = 9:PJ=PJ+2:GOTO 300



REM----------------LET 16BIT SUBSTRUCTURE
3300 IF LS$="" THEN L=1
3301 IF LS$="+" THEN L=2
3302 IF LS$="-" THEN L=3
3303 IF LS$="*" THEN L=4
3304 IF LS$="/" THEN L=5
3305 ON L GOTO 3310,3320,3340,3360,3380
3306 PRINT "ERR INCORRECT MATH OPERATION...":GOTO 1000


REM ----------16 BIT EQUALS
3310  SX$=LP$:SY$=LR$
3313 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY):CC$(2) = "STA " + CC$
3314 CC$(4) = "STA " + DD$:SS$ = SY$: GOSUB 400: IF T = 1 GOTO 3316
3315 EE$ =  STR$ (IX):CC$(1) = "LDA " + EE$:FF$ =  STR$ (IY):CC$(3) = "LDA " + FF$: GOTO 3319
3316 H = V: GOSUB 700:EE$ =  STR$ (HX(2)):FF$ =  STR$ (HX(1)):CC$(1) = "LDA #" + EE$:CC$(3) = "LDA #" + FF$
3319 A = 4: PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" ] <--": PJ=PJ+1:GOTO 300

REM----------16 BIT ADDITION
3320 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
3324 SS$ = SX$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):CC$(1) = "CLC":CC$(4) = "STA " + EE$
3325 CC$(7) = "STA " + FF$:SS$ = SY$: GOSUB 400: IF T = 1 GOTO 3327
3326 GG$ =  STR$ (IX):CC$(2) = "LDA " + GG$:HH$ =  STR$ (IY):CC$(5) = "LDA " + HH$: GOTO 3328
3327 H = V: GOSUB 700:GG$ =  STR$ (HX(2)):HH$ =  STR$ (HX(1)):CC$(2) = "LDA #" + GG$:CC$(5) = "LDA #" + HH$
3328 SS$ = SZ$: GOSUB 400: IF T = 1 GOTO 3330
3329 II$ =  STR$ (IX):CC$(3) = "ADC " + II$:JJ$ =  STR$ (IY):CC$(6) = "ADC " + JJ$: GOTO 3331
3330 H = V: GOSUB 700:II$ =  STR$ (HX(2)):JJ$ =  STR$ (HX(1)):CC$(3) = "ADC #" + II$:CC$(6) = "ADC #" + JJ$
3331 A = 7: PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" + ";SZ$;" ] <--":PJ=PJ+1:GOTO 300

REM-------16 BIT SUBTRACTION
3340 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
3344 SS$ = SX$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):CC$(1) = "SEC":CC$(4) = "STA " + EE$:CC$(7) = "STA " + FF$
3345 SS$ = SY$: GOSUB 400: IF T = 1 GOTO 3347
3346 GG$ =  STR$ (IX):CC$(2) = "LDA " + GG$:HH$ =  STR$ (IY):CC$(5) = "LDA " + HH$: GOTO 3348
3347 H = V: GOSUB 700:GG$ =  STR$ (HX(2)):HH$ =  STR$ (HX(1)):CC$(2) = "LDA #" + GG$:CC$(5) = "LDA #" + HH$
3348 SS$ = SZ$: GOSUB 400: IF T = 1 GOTO 3350
3349 II$ =  STR$ (IX):CC$(3) = "SBC " + II$:JJ$ =  STR$ (IY):CC$(6) = "SBC " + JJ$: GOTO 3351
3350 H = V: GOSUB 700:II$ =  STR$ (HX(2)):JJ$ =  STR$ (HX(1)):CC$(3) = "SBC #" + II$:CC$(6) = "SBC #" + JJ$
3351 A = 7: PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" - ";SZ$;" ] <--":PJ=PJ+1:GOTO 300

REM----------16 BIT MULTIPLICATION
3360  GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
3364 SS$ = SX$: GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):SS$ = SY$: GOSUB 400
3365 IF T = 1 THEN H = V: GOSUB 700:GG$ =  STR$ (HX(2)):HH$ =  STR$ (HX(1)):CC$(1) = "LDX #" + GG$:CC$(2) = "LDY #" + HH$: GOTO 3367
3366 GG$ =  STR$ (IX):HH$ =  STR$ (IY):CC$(1) = "LDX " + GG$:CC$(2) = "LDY " + HH$
3367 CC$(3) = "STX 30003":CC$(4) = "STY 30004": SS$ = SZ$: GOSUB 400
3368 IF T = 1 THEN H = V: GOSUB 700:II$ =  STR$ (HX(2)):JJ$ =  STR$ (HX(1)):CC$(5) = "LDX #" + II$:CC$(6) = "LDY #" + JJ$: GOTO 3370
3369 II$ =  STR$ (IX):JJ$ =  STR$ (IY):CC$(5) = "LDX " + II$:CC$(6) = "LDY " + JJ$
3370 CC$(7) = "COMMAND":CC$(8) = "GOSUB":CC$(9) = "LINE.16BITMULT"
3371 CC$(10) = "STX " + EE$:CC$(11) = "STY " + FF$:ZY$ = ZA$:ZA$ = CC$(9): GOSUB 350:ZA$ = ZY$
3372 A = 11: PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" * ";SZ$;" ] <--": PJ=PJ+1:GOTO 300

REM----------16 BIT DIVIDE
3380 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
3384 SS$=SX$:GOSUB 400:EE$=STR$(IX):FF$=STR$(IY):SS$=SY$:GOSUB 400
3385 IF T=1 THEN H=V:GOSUB 700:GG$=STR$(HX(2)):HH$=STR$(HX(1)):CC$(1)="LDX #"+GG$:CC$(2)="LDY #"+HH$:GOTO 3387
3386 GG$=STR$(IX):HH$=STR$(IY):CC$(1)="LDX "+GG$:CC$(2)="LDY "+HH$
3387 CC$(3) = "STX 30003":CC$(4) = "STY 30004":SS$ = SZ$: GOSUB 400
3388 IF T = 1 THEN H = V: GOSUB 700:II$ =  STR$ (HX(2)):JJ$ =  STR$ (HX(1)):CC$(5) = "LDX #" + II$:CC$(6) = "LDY #" + JJ$:GOTO 3390
3389 II$ =  STR$ (IX):JJ$ =  STR$ (IY):CC$(5) = "LDX " + II$:CC$(6) = "LDY " + JJ$
3390 CC$(7) = "COMMAND":CC$(8) = "GOSUB":CC$(9) = "LINE.16BITDIV"
3391 CC$(10) = "STX " + EE$:CC$(11) = "STY " + FF$
3392 ZY$ = ZA$:ZA$ = CC$(9): GOSUB 350:ZA$ = ZY$
3393 A=11:PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" / ";SZ$;" ] <--":PJ=PJ+1:GOTO 300


REM----------------LET 16BIT QUICKIES
3400  HTAB 5: PRINT "(* 16BIT) QUICKIES...."
3401  HTAB 5: PRINT "  1.  INCREASE (VARIABLE + 1)"
3402  HTAB 5: PRINT "  2.  DECREASE (VARIABLE - 1)"
3403  HTAB 5: PRINT "  3.  MULTIPLY (VARIABLE * 2)"
3404  HTAB 5: PRINT "  4.  MULTIPLY (VARIABLE *10)"
3405  HTAB 5: PRINT "  5.  DIVIDE   (VARIABLE / 2)"
3406  PRINT : HTAB 15: INPUT "  (1-5): ";DJ$: GOSUB 600
3407   PRINT:ON D GOTO 3440,3450,3420,3430,3410:GOTO 1000

3410  HTAB 20: INPUT "  (VAR)  [ A = A / 2  ] : ";SX$
3411  SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY)
3412 CC$(1) = "LSR " + DD$:CC$(2) = "ROR " + CC$:A = 2: GOTO 300

3420 HTAB 20: INPUT "  (VAR)  [ A = A * 2  ] : ";SX$
3421 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY)
3422 CC$(1) = "ASL " + CC$:CC$(2) = "ROL " + DD$:A = 2: GOTO 300

3430 HTAB 20: INPUT "  (VAR)  [ A = A * 10  ] : ";SX$
3431 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY)
3432 CC$(1) = "LDA " + DD$:CC$(2) = "PHA":CC$(3) = "LDA " + CC$:CC$(4) = "ASL " + CC$
3433 CC$(5) = "ROL " + DD$:CC$(6) = "ASL " + CC$:CC$(7) = "ROL " + DD$
3434 CC$(8) = "CLC":CC$(9) = "ADC " + CC$:CC$(10) = "STA " + CC$:CC$(11) = "PLA":CC$(12) = "ADC " + DD$
3435 CC$(13) = "STA " + DD$:CC$(14) = "ASL " + CC$:CC$(15) = "ROL " + DD$:A = 15: GOTO 300

3440  SS$=A$:GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY)
3442  CC$(1) = "INC " + EE$:CC$(2) = "BNE 3":CC$(3) = "INC " + FF$:A = 3:PJ=PJ+1: GOTO 300

3450  SS$=A$:GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY)
3452  CC$(1) = "LDA " + EE$:CC$(2) = "BNE 3":CC$(3) = "DEC " + FF$:CC$(4) = "DEC " + EE$:A = 4:PJ=PJ+1: GOTO 300






REM----------------LET = SUBSTRUCTURE (*8BIT)
5000 IF LS$="" THEN L=1
5001 IF LS$="+" THEN L=2
5002 IF LS$="-" THEN L=3
5003 IF LS$="*" THEN L=4
5004 IF LS$="/" THEN L=5
5005 ON L GOTO 5010,5020,5030,5040,5060
5006 PRINT "ERR INCORRECT MATH OPERATION...":GOTO 1000


REM-------------8BIT EQUAL
5010 SX$=LP$:SY$=LR$:SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):CC$(2) = "STA " + CC$
5014 SS$ = SY$: GOSUB 400: IF T = 1 GOTO 5016
5015 DD$ =  STR$ (IX):CC$(1) = "LDA " + DD$:A = 2:PJ=PJ+1:GOTO 300
5016 DD$ =  STR$ (V):CC$(1) = "LDA #" + DD$:A = 2:PJ=PJ+1:GOTO 300

REM-----------8BIT ADDITION
5020 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
5024 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):CC$(1) = "CLC":CC$(4) = "STA " + CC$
5025 SS$ = SY$: GOSUB 400: IF T = 1 THEN DD$ =  STR$ (V):CC$(3) = "ADC #" + DD$: GOTO 5027
5026 DD$ =  STR$ (IX):CC$(3) = "ADC " + DD$
5027 SS$ = SZ$: GOSUB 400: IF T = 1 THEN EE$ =  STR$ (V):CC$(2) = "LDA #" + EE$: GOTO 5029
5028 EE$ =  STR$ (IX):CC$(2) = "LDA " + EE$
5029 A = 4:PJ=PJ+1:GOTO 300

REM----------8BIT SUBTRACTION
5030 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
5034 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):CC$(1) = "SEC":CC$(4) = "STA " + CC$
5035 SS$ = SY$: GOSUB 400: IF T = 1 THEN DD$ =  STR$ (V):CC$(2) = "LDA #" + DD$: GOTO 5037
5036 DD$ =  STR$ (IX):CC$(2) = "LDA " + DD$
5037 SS$ = SZ$: GOSUB 400: IF T = 1 THEN EE$ =  STR$ (V):CC$(3) = "SBC #" + EE$: GOTO 5039
5038 EE$ =  STR$ (IX):CC$(3) = "SBC " + EE$
5039 A = 4: PJ=PJ+1:GOTO 300

REM---------8BIT MULTIPLY
5040 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
5044  SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY)
5045  CC$(3) = "COMMAND":CC$(4) = "GOSUB":CC$(5) = "LINE.8BITMULT":CC$(6) = "STA " + CC$:CC$(7) = "STY " + DD$
5046  SS$ = SY$: GOSUB 400: IF T = 1 THEN EE$ =  STR$ (V):CC$(1) = "LDX #" + EE$: GOTO 5048
5047  EE$ =  STR$ (IX):CC$(1) = "LDX " + EE$
5048  SS$ = SZ$: GOSUB 400: IF T = 1 THEN FF$ =  STR$ (V):CC$(2) = "LDY #" + FF$: GOTO 5050
5049 FF$ =  STR$ (IX):CC$(2) = "LDY " + FF$
5050 A = 7:ZP$ = ZA$:ZA$ = CC$(5): GOSUB 350:ZA$ = ZP$:PJ=PJ+1:GOTO 300

REM---------8BIT DIVIDE
5060 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
5064  SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY):CC$(1) = "LDA #0":CC$(2) = "STA " + DD$
5065  SS$ = SY$: GOSUB 400: IF T = 1 THEN EE$ =  STR$ (V):CC$(3) = "LDX #" + EE$: GOTO 5067
5066 EE$ =  STR$ (IX):CC$(3) = "LDX " + EE$
5067 SS$ = SZ$: GOSUB 400: IF T = 1 THEN FF$ =  STR$ (V):CC$(4) = "LDY #" + FF$: GOTO 5069
5068 FF$ =  STR$ (IX):CC$(4) = "LDY " + FF$
5069 CC$(5) = "COMMAND":CC$(6) = "GOSUB":CC$(7) = "LINE.8BITDIV"
5070 CC$(8) = "LDA 30004":CC$(9) = "STA " + CC$:A = 9:ZP$ = ZA$:ZA$ = CC$(7): GOSUB 350:ZA$ = ZP$:PJ=PJ+1:GOTO 300


REM----------------SPECIAL 8 BIT QUICKIES
5100 HTAB 5: PRINT "(* 8BIT) QUICKIES...."
5101 HTAB 5: PRINT "  1.  INCREASE (VARIABLE + 1)"
5102 HTAB 5: PRINT "  2.  DECREASE (VARIABLE - 1)"
5103 HTAB 5: PRINT "  3.  MULTIPLY (VARIABLE * 2)"
5104 HTAB 5: PRINT "  4.  DIVIDE   (VARIABLE / 2)"
5105 PRINT : HTAB 15: INPUT "  (1-4): ";DJ$: GOSUB 600
5106 PRINT:ON D GOTO 5130,5140,5120,5110:GOTO 1000

5110 HTAB 20: INPUT "  (VAR)  [ A = A / 2  ] : ";SX$
5111 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):CC$(1) = "LSR " + CC$:A = 1: GOTO 300
 
5120 HTAB 20: INPUT "  (VAR)  [ A = A * 2  ] : ";SX$
5121 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):CC$(1) = "ASL " + CC$:A = 1: GOTO 300

5130  SS$=A$:GOSUB 400:EE$ =  STR$ (IX):CC$(1) = "INC " + EE$:A = 1:PJ=PJ+1: GOTO 300

5140  SS$=A$:GOSUB 400:EE$ =  STR$ (IX):CC$(1) = "DEC " + EE$:A = 1:PJ=PJ+1: GOTO 300




REM----------------IF 8BIT SUBSTRUCTURE
5200 SF$=LP$:SG$=LR$
5201 IF LQ$="="  GOTO 5210
5202 IF LQ$=">"  GOTO 5230
5203 IF LQ$="<"  GOTO 5220
5204 PRINT "  ** INCORRECT SIGN [ ";LQ$;" ] or BAD FORMATTING":GOTO 1000


5210 SS$ = SF$:GOSUB 400:EE$ =  STR$ (IX):CC$(1) = "LDA " + EE$:CC$(3) = "BEQ +3"
5211 SS$ = SG$: GOSUB 400:IF T = 1 THEN  GOTO 5213
5212 GG$ =  STR$ (IX):CC$(2) = "CMP " + GG$: GOTO 5215
5213 H = V: GOSUB 700:GG$ =  STR$ (HX(2)):CC$(2) = "CMP #" + GG$
5215 CC$(4) = "COMMAND":CC$(5) = "NEXT":CC$(6) = ZA$:A = 6:PJ=PJ+2:GOTO 300


5220 SS$ = SF$: GOSUB 400:EE$ =  STR$ (IX):CC$(1) = "LDA " + EE$:CC$(3) = "BCC +3": GOTO 5211

5230  SS$ = SF$: GOSUB 400:EE$ =  STR$ (IX)
5231  SS$ = SG$: GOSUB 400:IF T = 1 GOTO 5233
5232  GG$ =  STR$ (IX):CC$(1) = "LDA " + GG$:GOTO 5234
5233  H = V: GOSUB 700:GG$ =  STR$ (H):CC$(1) = "LDA #" + GG$
5234  CC$(2) = "CMP " + EE$:CC$(3) = "BCC +3":GOTO 5215


REM----------------PADDLE CODE TO VARIABLE
5300 IF A$="X" OR A$="0" THEN D=1:GOTO 5305
5301 IF A$="Y" OR A$="1" THEN D=2:GOTO 5305
5302 PRINT "*ERR... INCORRECT PADDLE SPECIFICATION."
5303 GOTO 5303
5305 D=D-1:CC$=STR$(D):CC$(1)="LDX #"+CC$:CC$(2)="JSR 64286":CC$(3)="STY ":SZ$=LP$
5306 SS$=SZ$:GOSUB 400:CC$=STR$(IX):CC$(3)=CC$(3)+CC$:A=3:PJ=PJ+1:GOTO 300


REM----------------WAIT A PERIOD OF TIME
5310 GOSUB 750:SS$=A$:GOSUB 400:CC$=STR$(V)
5311 CC$(1)="LDX #"+CC$:CC$(2)="STX 6":CC$(3)="LDA #198":CC$(4)="JSR 64680"
5312 CC$(5)="LDX 6":CC$(6)="DEX":CC$(7)="BNE -12":A=7:PJ=PJ+1:GOTO 300



REM------------ASSEMBLY ENTRY MODE V2
6000 PRINT:HTAB 5:PRINT "** ASM ENTRY NOT AVAILABLE"
6001 HTAB 5:PRINT "      IN PARSER MODE...":PRINT:GOTO 10



REM------------VARIABLE LOOKUP ADDRESS V1
6010 PRINT:HTAB 5:PRINT "LOOKUP ADDRESS OF VARIABLE"
6011 HTAB 8:INPUT "VAR: ";SS$:GOSUB 400:PRINT
6012 HTAB 8:PRINT "VAR [ ";SS$;" ] @: ";IX;" - ";IY;" - ";IZ:GOTO 10


REM----------------LET 24BIT SUBSTRUCTURE
7000 IF LS$="" THEN L=1
7001 IF LS$="+" THEN L=2
7002 IF LS$="-" THEN L=3
7005 ON L GOTO 7100,7200,7300
7006 PRINT "ERR INCORRECT MATH OPERATION...":GOTO 1000



REM--------24BIT EQUALS
7100 SX$=LP$:SY$=LR$:SS$ = SX$
7103 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY):EE$=STR$(IZ)
7104 CC$(2) = "STA " + CC$:CC$(4)="STA "+DD$:CC$(6)="STA "+EE$
7105 SS$=SY$:GOSUB 400:IF T=1 GOTO 7110
7106 EE$=STR$(IX):CC$(1)="LDA "+EE$:FF$=STR$(IY):CC$(3)="LDA "+FF$
7108 GG$=STR$(IZ):CC$(5)="LDA "+GG$
7109 A=6:PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" ] <--": PJ=PJ+1:GOTO 300
7110 GG=INT(V/(256*256)):CC$(5)="LDA #"+STR$(GG):H=V-(GG*256*256):GOSUB 700:EE$ =  STR$ (HX(2))
7111 FF$ =  STR$ (HX(1)):CC$(1) = "LDA #" + EE$:CC$(3) = "LDA #" + FF$:GOTO 7109


REM-------24BIT ADDITION
7200 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
7204 SS$=SX$:GOSUB 400:EE$=STR$(IX):FF$=STR$(IY):GG$=STR$(IZ)
7205 CC$(1)="CLC":CC$(4)="STA "+EE$:CC$(7)="STA "+FF$:CC$(10)="STA "+GG$

7206 SS$=SY$:GOSUB 400:IF T=1 GOTO 7220
7207 HH$=STR$(IX):II$=STR$(IY):JJ$=STR$(IZ)
7208 CC$(2)="LDA "+HH$:CC$(5)="LDA "+II$:CC$(8)="LDA "+JJ$

7209 SS$=SZ$:GOSUB 400:IF T=1 GOTO 7230
7210 KK$=STR$(IX):LL$=STR$(IY):MM$=STR$(IZ)
7211 CC$(3)="ADC "+KK$:CC$(6)="ADC "+LL$:CC$(9)="ADC "+MM$
7214 A=10:PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" + ";SZ$;" ] <--":PJ=PJ+1:GOTO 300

7220 GG=INT(V/(256*256)):H=V-(GG*256*256):GOSUB 700
7221 CC$(8)="LDA #"+STR$(GG):H=V-(GG*256*256):GOSUB 700
7222 CC$(2) ="LDA #"+STR$ (HX(2)):CC$(5)="LDA #"+STR$(HX(1)):GOTO 7209

7230 GG=INT(V/(256*256)):H=V-(GG*256*256):GOSUB 700
7231 CC$(9)="ADC #"+STR$(GG):H=V-(GG*256*256):GOSUB 700
7232 CC$(3) ="ADC #"+STR$ (HX(2)):CC$(6)="ADC #"+STR$(HX(1)):GOTO 7214

REM------------24BIT SUBTRACTION
7300 GOSUB 750:LT$=A$:SX$=LP$:SY$=LR$:SZ$=LT$
7304 SS$=SX$:GOSUB 400:EE$=STR$(IX):FF$=STR$(IY):GG$=STR$(IZ)
7305 CC$(1)="SEC":CC$(4)="STA "+EE$:CC$(7)="STA "+FF$:CC$(10)="STA "+GG$

7306 SS$=SY$:GOSUB 400:IF T=1 GOTO 7320
7307 HH$=STR$(IX):II$=STR$(IY):JJ$=STR$(IZ)
7308 CC$(2)="LDA "+HH$:CC$(5)="LDA "+II$:CC$(8)="LDA "+JJ$

7309 SS$=SZ$:GOSUB 400:IF T=1 GOTO 7330
7310 KK$=STR$(IX):LL$=STR$(IY):MM$=STR$(IZ)
7311 CC$(3)="SBC "+KK$:CC$(6)="SBC "+LL$:CC$(9)="SBC "+MM$
7314 A=10:PRINT : HTAB 44: PRINT "--> [ ";SX$;" = ";SY$;" - ";SZ$;" ] <--":PJ=PJ+1:GOTO 300

7320 GG=INT(V/(256*256)):H=V-(GG*256*256):GOSUB 700
7321 CC$(8)="LDA #"+STR$(GG):H=V-(GG*256*256):GOSUB 700
7322 CC$(2) ="LDA #"+STR$ (HX(2)):CC$(5)="LDA #"+STR$(HX(1)):GOTO 7309

7330 GG=INT(V/(256*256)):H=V-(GG*256*256):GOSUB 700
7331 CC$(9)="SBC #"+STR$(GG):H=V-(GG*256*256):GOSUB 700
7332 CC$(3) ="SBC #"+STR$ (HX(2)):CC$(6)="SBC #"+STR$(HX(1)):GOTO 7314


REM----------------LET 24BIT QUICKIES
7400  HTAB 5: PRINT "(* 24BIT) QUICKIES...."
7401  HTAB 5: PRINT "  1.  INCREASE (VARIABLE + 1)"
7402  HTAB 5: PRINT "  2.  DECREASE (VARIABLE - 1)"
7403  HTAB 5: PRINT "  3.  MULTIPLY (VARIABLE * 2)"
7405  HTAB 5: PRINT "  4.  DIVIDE   (VARIABLE / 2)"
7406  PRINT : HTAB 15: INPUT "  (1-4): ";DJ$: GOSUB 600
7407   PRINT:ON D GOTO 7440,7450,7420,7410:GOTO 1000

7410  HTAB 20: INPUT "  (VAR)  [ A = A / 2  ] : ";SX$
7411  SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY):EE$=STR$(IZ)
7412 CC$(1)="LSR "+EE$:CC$(2) = "ROR " + DD$:CC$(3) = "ROR " + CC$:A = 3: GOTO 300

7420 HTAB 20: INPUT "  (VAR)  [ A = A * 2  ] : ";SX$
7421 SS$ = SX$: GOSUB 400:CC$ =  STR$ (IX):DD$ =  STR$ (IY):EE$=STR$(IZ)
7422 CC$(1) = "ASL " + CC$:CC$(2) = "ROL " + DD$:CC$(3)="ROL "+EE$:A = 3: GOTO 300




7440  SS$=A$
7441  GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):GG$=STR$(IZ)
7442  CC$(1) = "INC " + EE$:CC$(2) = "BNE 8":CC$(3) = "INC " + FF$
7443  CC$(4)="BNE 3":CC$(5)="INC "+GG$:A=5:PJ=PJ+1:GOTO 300

7450  SS$=A$:GOSUB 400:EE$ =  STR$ (IX):FF$ =  STR$ (IY):GG$=STR$(IZ)
7452 CC$(1)="LDA "+EE$:CC$(2)="BNE 11":CC$(3)="LDA "+FF$:CC$(4)="BNE 3"
7453 CC$(5)="DEC "+GG$:CC$(6)="DEC "+FF$:CC$(7)="DEC "+EE$:A=7:PJ=PJ+1:GOTO 300





REM----------------IF 24BIT SUBSTRUCTURE
7500 SF$=LP$:SG$=LR$
7501 IF LQ$="="  GOTO 7510
7502 IF LQ$=">"  GOTO 7700
7503 IF LQ$="<"  GOTO 7600
7504 PRINT "  ** INCORRECT SIGN [ ";LQ$;" ] or BAD FORMATTING":GOTO 1000



7510 SS$=SF$:GOSUB 400:EE$=STR$(IX):FF$=STR$(IY):GG$=STR$(IZ)
7511 CC$(1)="LDA "+GG$:CC$(4)="LDA "+FF$:CC$(7)="LDA "+EE$
7513 CC$(10)="COMMAND":CC$(11)="NEXT":CC$(12)=ZA$
7514 CC$(3)="BNE 16":CC$(6)="BNE 8":CC$(9)="BEQ 3"

7515 SS$=SG$:GOSUB 400:IF T=1 GOTO 7520
7516 HH$=STR$(IX):II$=STR$(IY):JJ$=STR$(IZ)
7517 CC$(2)="CMP "+JJ$:CC$(5)="CMP "+II$:CC$(8)="CMP "+HH$
7519 A=12:PJ=PJ+2:GOTO 300

7520 GG=INT(V/(256*256)):H=V-(GG*256*256):CC$(2)="CMP #"+STR$(GG):H=V-(GG*256*256):GOSUB 700
7521 CC$(5)="CMP #"+STR$(HX(1)):CC$(8)="CMP #"+STR$(HX(2)):GOTO 7519




REM----
7600 SS$=SF$:GOSUB 400:EE$=STR$(IX):FF$=STR$(IY):GG$=STR$(IZ)
7601 CC$(1)="LDA "+GG$:CC$(5)="LDA "+FF$:CC$(9)="LDA "+EE$
7602 CC$(12)="COMMAND":CC$(13)="NEXT":CC$(14)=ZA$
7603 CC$(3)="BCC 23":CC$(4)="BNE 18":CC$(7)="BCC 13":CC$(8)="BNE 8":CC$(11)="BCC 3"

7605 SS$=SG$:GOSUB 400:IF T=1 THEN GOTO 7610
7606 HH$=STR$(IX):II$=STR$(IY):JJ$=STR$(IZ)
7607 CC$(2)="CMP "+JJ$:CC$(6)="CMP "+II$:CC$(10)="CMP "+HH$
7608 A=14:PJ=PJ+2:GOTO 300

7610 GG=INT(V/(256*256)):H=V-(GG*256*256):CC$(2)="CMP #"+STR$(GG):H=V-(GG*256*256):GOSUB 700
7611 CC$(6)="CMP #"+STR$(HX(2)):CC$(10)="CMP #"+STR$(HX(1))

7615 CC$(3)="BCC 21":CC$(4)="BNE 16":CC$(7)="BCC 12":CC$(8)="BNE 7":CC$(11)="BCC 3":GOTO 7608



 7700 SS$ = SG$: GOSUB 400: IF T = 1 THEN X = X: GOSUB 7710:SS$ = SF$: GOSUB 400: GOSUB 7702:GOTO 7715
 7701  GOSUB 7702: GOSUB 7709:GOTO 7608
 7702 EE$ =  STR$ (IX):FF$ =  STR$ (IY):GG$ =  STR$ (IZ)
 7703 CC$(2) = "CMP " + GG$:CC$(6) = "CMP " + FF$:CC$(10) = "CMP " + EE$
 7704 CC$(12) = "COMMAND":CC$(13) = "NEXT":CC$(14) = ZA$
 7705 CC$(3) = "BCC 20":CC$(4) = "BNE 21":CC$(7) = "BCC 10":CC$(8) = "BNE 11":CC$(11) = "BCS 3"
 7706 SS$ = SF$: GOSUB 400
 7707 HH$ =  STR$ (IX):II$ =  STR$ (IY):JJ$ =  STR$ (IZ): RETURN 
 7709 CC$(1) = "LDA " + JJ$:CC$(5) = "LDA " + II$:CC$(9) = "LDA " + HH$: RETURN 
 7710 GG =  INT (V / (256 * 256)):H = V - (GG * 256 * 256):CC$(1) = "LDA #" +  STR$ (GG):H = V - (GG * 256 * 256): GOSUB 700
 7711 CC$(5) = "LDA #" +  STR$ (HX(1)):CC$(9) = "LDA #" +  STR$ (HX(2)): RETURN

 7715 CC$(3) = "BCC 18":CC$(4) = "BNE 19":CC$(7) = "BCC 9":CC$(8) = "BNE 10":CC$(11) = "BCS 3"
 7716 GOTO 7608


8000 GOSUB 750
8001 IF LEFT$(A$,1)="8" THEN A=1:GOSUB 8005:GOSUB 8006:GOTO 8020
8002 IF LEFT$(A$,1)="1" THEN A=2:GOSUB 8005:GOSUB 8006:GOTO 8014
8003 IF LEFT$(A$,1)="2" THEN A=2:GOSUB 8005:GOSUB 8006:GOTO 8025
8004 GOSUB 8006:GOTO 8010
8005 L=LEN(A$):A$=RIGHT$(A$,L-A):RETURN
8006 LP$=A$:GOSUB 750:LQ$=A$:GOSUB 750:LR$=A$:RETURN

8010 IF LR$="PEEK" THEN GOSUB 770:LS$=A$:GOTO 2040
8011 IF LR$="SCRN(" THEN GOSUB 770:LS$=A$:GOSUB 761:GOTO 2080
8012 IF LR$="RND" THEN GOSUB 770:LS$=A$:GOTO 2110
8013 IF LR$="PDL" THEN GOSUB 770:LS$=A$:GOTO 5300
8014 GOSUB 750
8015 LS$="":IF A$="+" OR A$="-" OR A$="*" OR A$="/" THEN LS$=A$:GOTO 8019
8016 PJ=PJ-1
8019 GOTO 3300

8020 GOSUB 750
8021 LS$="":IF A$="+" OR A$="-" OR A$="*" OR A$="/" THEN LS$=A$:GOTO 8023
8022 PJ=PJ-1
8023 GOTO 5000

8025 GOSUB 750
8026 LS$="":IF A$="+" OR A$="-" OR A$="*" OR A$="/" THEN LS$=A$:GOTO 8028
8027 PJ=PJ-1
8028 GOTO 7000
 

REM------INCREASER
8100 PJ=PJ-1:GOSUB 750:L=LEN(A$):A$=RIGHT$(A$,L-3):L=LEN(A$)
8101 IF LEFT$(A$,1)="8" THEN A$=RIGHT$(A$,L-1):GOTO 5130
8102 IF LEFT$(A$,1)="1" THEN A$=RIGHT$(A$,L-2):GOTO 8105
8103 IF LEFT$(A$,1)="2" THEN A$=RIGHT$(A$,L-2):GOTO 7440
8105 GOTO 3440

REM------DECREASER
8200 PJ=PJ-1:GOSUB 750:L=LEN(A$):A$=RIGHT$(A$,L-3):L=LEN(A$)
8201 IF LEFT$(A$,1)="8" THEN A$=RIGHT$(A$,L-1):GOTO 5140
8202 IF LEFT$(A$,1)="1" THEN A$=RIGHT$(A$,L-2):GOTO 8205
8203 IF LEFT$(A$,1)="2" THEN A$=RIGHT$(A$,L-2):GOTO 7450
8205 GOTO 3450

REM-----IF
8300 GOSUB 750:LP$=A$:GOSUB 750:LQ$=A$:GOSUB 750:LR$=A$:L=LEN(LP$)
8301 IF LEFT$(LP$,1)="8" THEN LP$=RIGHT$(LP$,L-1):GOTO 5200
8302 IF LEFT$(LP$,1)="1" THEN LP$=RIGHT$(LP$,L-2):GOTO 8304
8303 IF LEFT$(LP$,1)="2" THEN LP$=RIGHT$(LP$,L-2):GOTO 7500
8304 GOTO 3200


